home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware Grab Bag
/
Shareware Grab Bag.iso
/
090
/
grline.c
< prev
next >
Wrap
Text File
|
1985-06-03
|
896b
|
51 lines
#define abs(x) ((x)<0?-(x):(x))
#define sign(x) ((x)<0?-1:1)
#define TRUE 1
struct point
{
int x;
int y;
};
int grline(start,end,color)
struct point *start, *end;
int color;
{
int x,y,xt,yt,r,delx,dely,dx,dy;
x=start->x;
y=start->y;
xt=end->x;
yt=end->y;
r=0;
while(TRUE)
{
setbit(x,y);
delx=xt-x;
dely=yt-y;
dx=abs(delx);
dy=abs(dely);
if(dx>=dy)
{
if(x==xt)
return;
x+=sign(delx);
r+=dy;
if(r>=(dx-r))
{
y+=sign(dely);
r-=dx;
}
}
else
{
if(y==yt)
return;
y+=sign(dely);
r+=dx;
if(r>=(dy-r))
{
x+=sign(delx);
r-=dy;
}
}
}
}